To assist in understanding the present invention, several definitions are provided below. These definitions are not necessarily exclusive or comprehensive; they are provided instead primarily as aids to study and discussion. In particular, they illustrate distinctions which may help one understand better how aspects of the present invention relate to tools and techniques that were already known in other contexts. The terms to be defined were selected, and the definitions below were written, after the present invention had already been conceived and described. That is, both the terms themselves and the points emphasized in their definitions were selected in hindsight, with the invention and various references already in mind. Thus, one of skill at the time of invention who had not already been told about the invention would not necessarily have focused on any or all of these terms or on the distinctions that are highlighted by the definitions given here.
BOOT CODE: Boot code is used to load and/or start the OPERATING SYSTEM. Boot code is normally stored in system read-only memory (ROM) and in one or more specified SECTORS that are read by the ROM code, such as the first sector of the first bootable disk found on the machine being booted. On a diskless node, BOOT CODE may read an operating system image over a network link. In many IBM-compatible PCs, the system ROM checks for boot code on a floppy drive first, and boots using that code if it is found; if a bootable floppy is not found, then the system looks for a bootable hard disk, and in some cases for a bootable CD-ROM and/or a network link to a boot server. Regardless of whether the operating system image is loaded from a floppy, a hard disk, a CD-ROM, or a network, the BOOT CODE is run before the operating system, and before the FILE SYSTEM code, so the operating system boot code is not typically stored in a FILE.
CONTIGUOUS: Contiguous SECTORS are sectors located next to each other in a single clump, such as the sixty-three sectors identified as logical sector 0 through logical sector 62. Particular contiguous sectors are not necessarily adjacent, e.g., in the example logical sector 0 and logical sector 62 are not adjacent but they are contiguous. However, contiguous sectors of a file are not separated by any sector that does not belong to the file, except perhaps by unusable sectors such as known bad sectors. A PARTITION is a set of contiguous sectors. A set of contiguous sectors in a given FILE in a FILE SYSTEM is sometimes called a “run”. A file system defragmenter tries to increase the number of contiguous sectors, so that all sectors of a given file are contiguous. In general, however, the sectors in a given file are not necessarily contiguous, and even if they are, they will not necessarily remain contiguous as changes are made to the file's content and the set of sectors allocated to the file changes. A region of random access memory (RAM) is contiguous if no two addressable memory elements (e.g., bytes or words) of the region are separated by an addressable memory element which is not part of the region.
DIRECTORY: A directory is a place to put FILES in a FILE SYSTEM, from a user's point of view. From the file system point of view, the data in the files of a given directory may be in SECTORS scattered throughout a PARTITION, even though the user views the files as all being located in the same place. Directories are arranged in a hierarchy, so a root directory may contain files and/or other directories; the directories may in turn contain files and/or other directories, and so on.
FILE: A file is a named piece of data; the file's name allows OPERATING SYSTEMS and application programs to use the FILE SYSTEM to retrieve the data without making the operating system or application program otherwise identify the disk SECTORS that currently hold the data. Data can be stored in one or more sectors without being stored in a file, but data accessed through application programs such as word processors and spreadsheets is typically stored in one or more files. Indeed, the code for an application program itself is typically stored in one or more files. A file is defined by and within a file system. Thus, files can be renamed, copied, and/or moved by users. Sectors on a disk which are known to some specialized program, but are not known generally to users collectively by name and to file system software and file system structures, do not constitute a file.
FILE SYSTEM: A file system includes system code and/or data structures which track the current location on disk of data that is stored in zero or more files on disk. A file system may be viewed as a mapping between DIRECTORIES and FILES, on the one hand, and disk SECTORS, on the other hand. A file system resides in one or more PARTITIONS. Examples of file systems include FAT (file allocation table) file systems, NTFS (Windows NT file system), HPFS (High Performance File System), UNIX-style files systems (those using vnode or inode structures, for instance), and others.
OPERATING SYSTEM: An operating system includes system code and data structures which run application programs such as word processors and spreadsheets, which manage resources (e.g., disk storage, random access memory) for those programs, and which provide I/O facilities for users and programs (e.g., keyboard, mouse, display screen). Examples include DOS (e.g., MS-DOS), UNIX variations (e.g., Linux), Microsoft Windows variations (e.g., Windows 98, Windows NT), and others. The operating system often either includes or cooperates closely with a FILE SYSTEM. Much or all of the operating system code and data is often stored in FILES, but at least part of the BOOT CODE that loads and starts the operating system typically is not stored in a file. Some tasks are easier to perform on a computer before the operating system is booted, such as tasks that would compete with the operating system for control of resources (e.g., hard disks), while other tasks are easier to perform after the operating system is running, such as file reads and writes.
PARTITION: A partition is a collection of contiguous SECTORS on a hard disk. A partition may be unformatted, or it may be formatted for a particular FILE SYSTEM. Definitions of partitions are given in a partition table, which is generally not stored in a FILE but is instead stored in a particular SECTOR, such as the first sector of a disk.
SECTOR: A disk sector holds a specified amount of data; commonly used disk sectors hold 512 bytes of data each. Low-level routines, such as BIOS routines on an IBM-compatible PC, can be used to read and write individual disk sectors. However, application programs such as word processors and spreadsheets do not typically do such I/O themselves. Instead, they access data by way of FILES, and rely on the FILE SYSTEM software to locate the sectors in question and to read and/or write them as needed. A given disk sector in a PARTITION is not necessarily tracked by a file system, and a given sector on disk is not necessarily part of any partition. Hard disks are not the only storage devices which use sectors; sectors are also present on floppy disks and on CD-ROMs, for instance.
Bearing in mind these definitions and the availability of other information, such as references filed with the Patent Office pursuant to the duty of candor, the present invention will now be described and claimed.